This relates to integrated circuits and more particularly, to circuitry for detecting and correcting soft memory errors in integrated circuits such as programmable integrated circuits.
Programmable integrated circuits are a type of integrated circuit that can be programmed by a user to implement a desired custom logic function. In a typical scenario, a logic designer uses computer-aided design tools to design a custom logic circuit. When the design process is complete, the tools generate configuration data. The configuration data is loaded into memory elements to configure the devices to perform the functions of the custom logic circuit.
Memory elements are often based on random-access-memory (RAM) cells. Because the RAM cells are loaded with configuration data during device programming, the RAM cells are sometimes referred to as configuration memory or configuration random-access-memory cells (CRAM).
During normal operation of a programmable device, loaded CRAM cells produce static output signals that are applied to the gates of transistors (e.g., pass transistors). The CRAM output signals turn some transistors on and turn other transistors off. This selective activation of certain transistors on the device customizes the operation of the device so that the device performs its intended function.
When operating in a system, programmable devices are subject to environmental background radiation. Particularly in modern programmable devices that contain large numbers of CRAM cells, there is a possibility that a radiation strike on a CRAM cell will cause the CRAM cell to change its state. For example, a CRAM cell storing a “1” configuration bit may flip its state so that the cell erroneously stores a “0” bit. When a CRAM cell changes state, the transistor that is controlled by that CRAM cell will be placed into an erroneous state. The transistor might, for example, be turned on when it should have been turned off.
Radiation-induced errors that arise in configuration random-access-memory cells are sometimes referred to as soft errors. One way in which soft errors can be addressed is to change the design of the configuration random-access-memory cells. However, changes to the configuration random-access-memory cells can introduce undesired circuit complexity and can consume additional circuit real estate.
Programmable devices sometimes include error detection circuitry that continuously monitors an entire array of CRAM cells. If an error is detected in the array, an error flag may be set. Systems that require highly reliable operations can monitor the status of the error flag to determine whether the programmable device has experienced any soft errors. So long as no errors are present, the system allows the programmable device to operate normally. If, however, the state of the error flag indicates that one of the configuration random-access-memory cells on the device has exhibited a soft error, the system can reconfigure the device by reloading the original configuration data into the configuration random-access-memory cells. Reloading the entire programmable device every time a soft error is detected may, however, result in unnecessarily frequent disruptions and may consume significant amounts of power.
In an effort to reduce the amount of power consumed during device reconfiguration, partial reconfiguration techniques are sometimes used. Partial reconfiguration techniques are typically used to load configuration data into a portion of a device without regard to whether or not an error is present in the device.
Conventional error detection circuitry such as error detection circuitry that uses cyclic redundancy check (CRC) may only be capable of detecting and identifying the location of a limited number of soft errors. For example, conventional error detection circuitry may only be able to detect two soft errors on a programmable device. If there are three soft errors on the programmable device, conventional error detection circuitry may produce an incorrect error message or may not be able to properly locate the position of the three soft errors.
It would therefore be desirable to be able to provide integrated circuits with improved error detection circuitry.